home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagg_m.zip
/
GRAPHICS.SWG
/
0130_GRAPHICS ROUTINES.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-08-24
|
1KB
|
89 lines
{here are some assembler routines for the 320x200x256 mode.}
uses
crt;
PROCEDURE InitVGA; ASSEMBLER;
asm
mov ax, 13h
int 10h
end;
PROCEDURE InitTEXT; ASSEMBLER;
asm
mov ax, 03h
int 10h
end;
PROCEDURE PlotPixel1(X, Y: Word; Color: Byte); ASSEMBLER;
asm
push es
push di
mov ax, Y
mov bx, ax
shl ax, 8
shl bx, 6
add ax, bx
add ax, X
mov di, ax
mov ax, $A000
mov es, ax
mov al, Color
mov es:[di], al
pop di
pop es
end;
PROCEDURE PlotPixel2(X, Y : word; Color : byte);
begin
if (X<320) then if (Y<200) then mem[$A000: Y*320+X] := color;
end;
PROCEDURE SetColor (ColorNo, Red, Green, Blue : byte);
begin
PORT[$3C8] := ColorNo;
PORT[$3C9] := Red;
PORT[$3C9] := Green;
PORT[$3C9] := Blue;
end;
var
LoopX : word;
LoopY, R, G, B, i : byte;
Ky : char;
Begin
Randomize;
InitVGA;
for LoopY := 0 to 199 do
begin
for LoopX := 0 to 319 do
PlotPixel1(LoopX, LoopY, random(255)+1);
end;
B := 0;
repeat
G := random(63);
for R := 0 to 63 do
begin
Setcolor(random(255)+1, R, G, B);
inc(G, 1);
if G=64 then G := 0;
end;
for G := 63 downto 0 do
R := random(63);
begin
Setcolor(random(255)+1, R, G, B);
dec(R, 1);
if R=0 then R := 63;
end;
inc(B, random(10)-5);
if B>63 then B := random(63);
until keypressed;
Ky := readkey;
InitTEXT;
end.